package com.jml.transaction.jdbc事务;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


//数据库连接池这些都是连接都是放在阻塞队列中从而进行重复使用，只要是大小不超过最大空闲就可以了，释放连接就是把连接放入队列，超出队列范围就会close连接

/**
 *注意默认情况下Spring中的事务处理只对RuntimeException方法进行回滚，
 * 所以如果save中将 RuntimeException替换成普通的Exception不会产生回滚效果。
 *
 * 根据配置文件的命名空间在加载BeanDefinition的时候加载TxNamespaceHandler类调用init方法初始化类AnnotationDrivenBeanDefinitionParser，
 * 放在spring的解析器中，key就是annotation-driven，value就是这个类，之后在加载BD的时候根据事务标签找到对应value并且执行parase方法。
 *
 */
public class MainTest {
	public static void main(String[] args) throws Exception {
		ApplicationContext act = new ClassPathXmlApplicationContext("/transaction/jdbc事务/datasource.xml");
		UserService userService = (UserService)act.getBean("userService");
		User user = new User(1,"事务",2,"s");
		userService.save(user);
	}
}
